package com.cskaoyan.javase.oop2.extend2.introduction1;

/**
 * @description: 用继承改造
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 继承的语法：
 * [访问权限修饰符] class 类名 extends 被继承的类{}
 *  可维护性就大大提升
 *  继承的本质：和方法一样，都是复用代码
 *
 *  使用继承extends关键字后，该类就获取到了被继承类的所有成员
 * - 在这个基础上，还可以自己再定义成员
 * - 在被继承类中增加成员，会被所有继承类继承
 *
 * 继承的本质，仍然是，复用代码
 * - 类比抽取出方法
 * - 当多个类中存在相同属性和行为时，将这些内容抽取到单独一个类中
 * - 多个类无需再定义这些属性和行为，只要继承那个类即可
 *
 */
public class NewDemo {
    public static void main(String[] args) {
        //创建student对象和teacher对象
        NewStudent np = new NewStudent();
        NewTeacher nt = new NewTeacher();

        System.out.println(np.name2); //继承自NewPerson的name
        System.out.println(nt.name2); //继承自NewPerson的name

        np.eat(); //继承自NewPerson的eat
        nt.eat();//继承自NewPerson的eat

        System.out.println(np.age);
        System.out.println(nt.age);
    }
}

class NewPerson{
    int age;
    String name2 = "张三";
    public void eat(){
        System.out.println("吃饭");
    }
}
class NewStudent extends NewPerson{
    int stuId;
    public void study(){
        System.out.println("好好学习，天天向上");
    }
}
class NewTeacher  extends NewPerson{
    int teacherId;
    public void teach(){
        System.out.println("老师天天催眠大法");
    }
}

